home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
fb386
/
tool
/
watanabe
/
medit
/
medit_a.bas
< prev
next >
Wrap
BASIC Source File
|
1995-01-22
|
4KB
|
84 lines
60000 '
60010 '『文字編集サブルーチン TYPE A』使用例
60020 CLEAR ,,1024,100000,6,0:LOADM"keyclear.rex",0
60030 CONSOLE 0,24,2:COLOR 1,7:CLS
60040 LINE(0,463)-(639,479),PSET,0,BF,0
60050 E_文字$="文字列編集サブルーチン TYPE A v1.02 (C)渡辺 良一"
60060 E_字数=51:E_X=15:E_Y=10
60070 E_CR0=15:E_CR1=10:E_CR2=0
60080 GOSUB *文字編集:END
60090 '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
60100 '★ プログラム開発支援シリーズ第5弾 ★
60110 '★ 文字列編集サブルーチン TYPE A v1.02 ★
60120 '★ 94年10月14日(金) (C)渡辺 良一 ★
60130 '★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
60140 '
60150 '変数紹介(先頭の『E_』は省略)
60160 ' 文字$ ……… 編集する文字列
60170 ' X,Y ……… 文字を表示する文字座標
60180 ' 字数 ……… 編集する文字の最大の長さ(半角計算)
60190 ' CR0 ……… 背景色
60200 ' CR1 ……… カーソルの色
60210 ' CR2 ……… 枠の表示色
60220 ' CR ……… カーソル移動時に使用
60230 ' M ……… 文字入力時に使用
60240 ' XX ……… カーソルを表示するX文字座標
60250 ' C ……… カーソルの文字列中の位置(文字数で)
60260 ' I,I2 ……… カーソルを移動させる文字座標
60270 ' K$,K ……… 入力された文字とそのキャラクタコード
60280 '
60290 *文字編集
60300 CALLM 0
60310 GOSUB *E_文字表示
60320 E_XX=LEN(E_文字$):E_C=KLEN(E_文字$)
60330 E_CR=E_CR1:GOSUB *E_書く
60340 '枠を表示したくない場合は下の行と「E_CR2」と言う変数を削除してください
60350 LINE(E_X*8-1,E_Y*19-1)-STEP(E_字数*8+3,17),PSET,%E_CR2,B
60360 *E_INKEY
60370 E_K$=INKEY$
60380 IF E_K$="" THEN *E_INKEY
60390 E_K=ASC(E_K$)
60400 ' ↓実行キー
60410 IF E_K=13 THEN GOSUB *E_消す:RETURN
60420 IF E_K=24 THEN GOSUB *E_消す:RETURN' 復帰する場所を指定
60430 ' ↑取消キー
60440 IF E_K=5 AND E_XX<LEN(E_文字$) THEN *E_一括削除
60450 IF E_K=8 AND E_C >0 THEN *E_後退
60460 IF E_K=127 THEN IF E_XX<LEN(E_文字$) THEN *E_削除 ELSE *E_INKEY
60470 IF E_K=28 AND E_XX<LEN(E_文字$) THEN E_I= 1:GOTO *E_左右移動 '右
60480 IF E_K=29 AND E_C >0 THEN E_I=-1:GOTO *E_左右移動 '左
60490 IF E_K<32 THEN *E_INKEY '↓日本語文字なら次も入力する
60500 IF (127<E_K AND E_K<160) OR 223<E_K THEN E_K$=E_K$+INKEY$
60510 '**** 文字入力 *********
60520 E_M=LEN(E_文字$+E_K$)
60530 IF E_M>E_字数 THEN BEEP:CALLM 0:GOTO *E_INKEY
60540 E_文字$=KLEFT$(E_文字$,E_C)+E_K$+KMID$(E_文字$,E_C+1)
60550 E_I=1:E_I2=LEN(E_K$):GOSUB *E_文字表示:GOTO *E_移動
60560 '
60570 *E_一括削除
60580 E_文字$=KLEFT$(E_文字$,E_C)+STRING$(LEN(E_文字$)-E_C,32)
60590 GOSUB *E_文字表示
60600 E_文字$=KLEFT$(E_文字$,E_C)
60610 GOTO *E_INKEY
60620 *E_後退
60630 IF KTYPE(E_文字$,E_C) THEN E_I2=-2 ELSE E_I2=-1
60640 E_文字$=KLEFT$(E_文字$,E_C-1)+KMID$(E_文字$,E_C+1)
60650 GOSUB *E_文字表示:E_I=-1:GOTO *E_移動
60660 *E_削除
60670 E_文字$=KLEFT$(E_文字$,E_C)+KMID$(E_文字$,E_C+2)
60680 GOSUB *E_文字表示
60690 GOTO *E_INKEY
60700 *E_左右移動 '↓右移動なら+1 ↓日本語文字ならば
60710 IF KTYPE(E_文字$,29-E_K +E_C) THEN E_I2=E_I*2 ELSE E_I2=E_I
60720 '************************
60730 *E_移動
60740 E_C=E_C+E_I
60750 GOSUB *E_消す
60760 E_CR=E_CR1:E_XX=E_XX+E_I2
60770 GOSUB *E_表示
60780 GOTO *E_INKEY
60790 *E_消す:E_CR=E_CR0:GOSUB *E_書く:RETURN 'カーソル消す
60800 *E_表示:E_CR=E_CR1:GOSUB *E_書く:RETURN 'カーソル表示
60810 *E_書く:LINE((E_X+E_XX)*8,E_Y*19)-STEP(1,15),PSET,%E_CR,B:RETURN
60820 *E_文字表示:LOCATE E_X,E_Y:PRINT E_文字$;" ":RETURN